back to
Creeper World
# Util-AltitudeMultiplier.crpl
# Created by: nathanaelps
# Created on: 9/18/2020 12:56:49 PM
# ------------------------------------------
$Multiplier:10
$VoidDepth:2100
# If we're doing a sub-map section, we can use these. Probably not real useful, unless we're wanting a really big map with just a small area sized up? Idk.
$startX:0
$startY:0
$endX:-1 # -1 means "full map width"
$endY:-1 # -1 means "full map height"
$ChunkSize:30 # Cells per chunk side.
once
# set visible details
"Each altitude counts as " <-Multiplier Concat SetPopupText
Self "main" "Custom0" SetImage # this is usually empty in my maps, so it's invisible.
self CONST_CREATEPZ 0 SetUnitAttribute
self CONST_COUNTSFORVICTORY 0 SetUnitAttribute
self CONST_NULLIFIERDAMAGES 0 SetUnitAttribute
# sanitize input. Not perfect, I don't think, but... Yeah.
<-endX 0 lt if MapWidth ->endX endif
<-endY 0 lt if MapHeight ->endY endif
<-endX MapWidth gt if MapWidth ->endX endif
<-endY MapHeight gt if MapHeight ->endY endif
<-endX <-startX sub ->width
<-endY <-startY sub ->height
<-width <-ChunkSize div 1 add ->ChunkWidth
<-height <-ChunkSize div 1 add ->ChunkHeight
<-ChunkWidth <-ChunkHeight mul ->ChunkCount
<-ChunkCount 1 add ->currentChunk
endonce
@stepFilter # This fires each tick, it's the heartbeat of the machine.
:stepFilter
<-currentChunk <-ChunkHeight mod ->iChunkX
<-currentChunk <-ChunkHeight div ->iChunkY
<-iChunkX <-ChunkSize mul <-startX add ->chunkStartX
<-iChunkY <-ChunkSize mul <-startY add ->chunkStartY
<-chunkStartX <-ChunkSize add ->chunkEndX
<-chunkStartY <-ChunkSize add ->chunkEndY
<-chunkEndX <-endX gt if <-endX ->chunkEndX endif
<-chunkEndY <-endY gt if <-endY ->chunkEndY endif
<-chunkEndX <-chunkStartX do
<-chunkEndY <-chunkStartY do
I J @filter
loop
loop
<-currentChunk 1 add <-ChunkCount mod ->currentChunk
:filter
->y ->x
<-x <-y GetTerrain ->t
<-t -1 neq if
<-x <-y <-t <-Multiplier mul SetTerrainOverride
else
<-x <-y <-VoidDepth SetTerrainOverride
endif